/**
 * 返回一个随机id
 * @returns 随机id
 */
export function getIDBase() {
    let reg = /[xy]/g;
    let templete = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx-xxxx';
    let d = new Date().getTime();
    const uuid = templete.replace(reg, function (c) {
      var r = (d + Math.random() * 16) % 16 | 0;
      d = Math.floor(d / 16);
      return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
    });
    return uuid;
}
  


/**
 * 判断传入时间返回时间范围标签
 * @param date 需要判断的时间
 * @returns '本周' | '本月' | '本年' | '更早'
 */
export function getFormatDate(date: Date): string {
  const now = new Date();
  const targetDate = new Date(date);
  
  const isToday = 
    targetDate.getFullYear() === now.getFullYear() &&
    targetDate.getMonth() === now.getMonth() &&
    targetDate.getDate() === now.getDate();
  
  // 获取本周一的日期
  const weekStart = new Date(now);
  weekStart.setDate(now.getDate() - now.getDay() + 1);
  weekStart.setHours(0, 0, 0, 0);
  
  // 获取本月第一天
  const monthStart = new Date(now.getFullYear(), now.getMonth(), 1);
  
  // 获取本年第一天
  const yearStart = new Date(now.getFullYear(), 0, 1);
  //返回今天
  if (isToday) {
    return '今天'
  }else if(targetDate >= weekStart) {
      return '本周';
  } else if (targetDate >= monthStart) {
      return '本月';
  } else if (targetDate >= yearStart) {
      return '本年';
  } else {
      return '更早';
  }
}

//时间格式化函数 （）
export function dateFormat(date: Date, fmt: string) {
  let o = {
    "M+": date.getMonth() + 1, //月份
    "d+": date.getDate(), //日
    "h+": date.getHours(), //小时
    "m+": date.getMinutes(), //分
    "s+": date.getSeconds(), //秒
    "q+": Math.floor((date.getMonth() + 3) / 3), //季度
    S: date.getMilliseconds(), //毫秒
  };
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + "").substr(4 - RegExp.$1.length),
    );
  }
  for (let k in o) {
    if (new RegExp("(" + k + ")").test(fmt)) {
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length),
      );
    }
  }
  return fmt;
}


// 字符转义
const escapeHtml = (text) => {
  return text
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#039;');
}

// 高亮文本
export const highlightText = (text, keyword) => {
  if (!keyword) return escapeHtml(text);
  const reg = new RegExp(keyword, 'gi');
  return escapeHtml(text).replace(reg, match => `<span style="color: #1677ff">${match}</span>`);
}